/*
 * @Author: libaihao 22857108132qq.com
 * @Date: 2022-09-29 16:33:38
 * @LastEditors: libaihao 22857108132qq.com
 * @LastEditTime: 2022-10-17 16:26:42
 * @FilePath: \vue02 - 副本\src\main.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
//类似于java 的main方法，项目将从这里开始执行
import Vue from 'vue'
//导入 App.vue组件
import App from './App.vue'
//导入路由 import router from './router/index.js'后缀是index.js可以省略
import router from './router'
import store from './store';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import 'font-awesome/css/font-awesome.min.css'


import {postKeyValueRequest} from "@/utils/api";
import {postRequest} from "@/utils/api";
import {putRequest} from "@/utils/api";
import {deleteRequest} from "@/utils/api";
import {getRequest} from "@/utils/api";

Vue.prototype.postKeyValueRequest=postKeyValueRequest
Vue.prototype.postRequest=postRequest
Vue.prototype.putRequest=putRequest
Vue.prototype.deleteRequest=deleteRequest
Vue.prototype.getRequest = getRequest;

/**
 * 全局的前置导航守卫（在页面跳转之前，进行拦截）
 * 这个类似于Java 中的 Filter
 * to:去哪里，目标页面
 * from：从哪来，从哪个页面上跳转来
 * next：类似过滤器中的 filterChain
 *
 * Vuex是存数据的 Vux是一套ui库
 * 将动态菜单的数据，存入到一个公共的地方（Vuex/Pinia），
 * Vuex中的数据有一个特点：浏览器刷新的时候，数据会丢失
 *
 * 在页面跳转的时候，通过全局前置的导航守卫去监听页面跳转，
 * 在页面跳转的时候，去判断Vuex中还有没有数据，如果有，说明是正常跳转，
 * 这种直接跳转即可，不用做额外的处理，如果Vuex中没有动态菜单的数据
 * 那么说明用户按了f5跳转，此时就要去服务端重新加载一下菜单数据。
 *
 */
router.beforeEach((to,from,next)=>{
  next();
  if (to.path == '/'){
    //说明要去的是登录页面
    next();
  }else{
    if (window.sessionStorage.getItem("user")){
      next();
    }else{
      //说明用户没有登录，去登陆
      next("/?redirect="+to.path);
    }
  }
})
Vue.config.productionTip = false
Vue.use(ElementUI)
/**
 * 将App 组件放到 id 为 app 的 div中
 */
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
